﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using SOAPServices.Persistencia;
using SOAPServices.Dominio;

namespace SOAPServices
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Clientes" in code, svc and config file together.
    public class Clientes : IClientes
    {
        private ClienteDAO clienteDAO = null;

        private ClienteDAO ClienteDAO
        {
            get
            {
                if (clienteDAO == null)
                    clienteDAO = new ClienteDAO();
                return clienteDAO;
            }

        }
        private TipoEmpresaDAO tipoempDAO=null;
        private TipoEmpresaDAO TipoempDAO
        {
            get
            {
                if (tipoempDAO == null)
                    tipoempDAO = new TipoEmpresaDAO();
                return tipoempDAO;
            }

        }

        public Cliente CrearCliente(int Codigo, string nroRUC, string razSocial, DateTime fecIniOperaciones, int cntEmpleados, int tipempresa)
        {
            TipoEmpresa tipempExistente = TipoempDAO.Obtener(tipempresa);
            Cliente clienteACrear = new Cliente()
            {
               
                nroRUC = nroRUC,
                razSocial = razSocial,
                fecIniOperaciones = fecIniOperaciones,
                cntEmpleados = cntEmpleados,
                tipEmpresa = tipempExistente

            };
            return ClienteDAO.Crear(clienteACrear);
            

        }

        public Cliente ObtenerCliente(int codigo)
        {
            return ClienteDAO.Obtener(codigo);
        }

        public Cliente ModificarCliente(int Codigo, string nroRUC, string razSocial, DateTime fecIniOperaciones, int cntEmpleados, int tipempresa)
        {
            TipoEmpresa tipempExistente = TipoempDAO.Obtener(tipempresa);
            Cliente clienteAModificar = new Cliente()
            {
                Codigo = Codigo,
                nroRUC = nroRUC,
                razSocial = razSocial,
                fecIniOperaciones = fecIniOperaciones,
                cntEmpleados = cntEmpleados,
                tipEmpresa = tipempExistente

            };
            return ClienteDAO.Modificar(clienteAModificar);
        }

        public void EliminarCliente(int codigo)
        {
            Cliente clienteExistente = ClienteDAO.Obtener(codigo);
            ClienteDAO.Eliminar(clienteExistente);
        }

        public List<Cliente> ListarClientes()
        {
            return ClienteDAO.ListarTodos().ToList();
        }
    }
}
